package cn.luke.basic.controller;


import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.luke.basic.debounces.Debounce;
import cn.luke.basic.entity.DtoTemplateCampus;
import cn.luke.basic.entity.DtoTemplateCourse;
import cn.luke.basic.log_api.LogApi;
import cn.luke.basic.rs.ResponseResult;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;


import cn.luke.basic.utils.MyAssert;


import cn.luke.basic.services.ServiceTemplateCourse;

import java.util.List;
import java.util.Map;


/**
 * 课程
 * pathName
 */

@RestController
@ResponseResult
@RequestMapping("/templateCourse")
public class ControllerTemplateCourse implements MyAssert {
    @Resource
    private ServiceTemplateCourse serviceTemplateCourse;


    /**
     * 课程-保存
     */
    @Debounce
    @LogApi("课程-保存")
    @PostMapping("/save")
//    @SaCheckPermission("templateCourse.save")
    public void save(@RequestBody DtoTemplateCourse templateCourse) {
//        intIsNull(templateCourse.getId(), "模板ID");
        intIsNull(templateCourse.getTemplateId(), "模板ID");
        strIsNull(templateCourse.getCourse(), "课程描述");
        strIsNull(templateCourse.getTime(), "时长描述");
        strIsNull(templateCourse.getAge(), "适龄描述");
        serviceTemplateCourse.save(templateCourse);
    }

    /**
     * 课程-状态修改
     */
    @Debounce
    @GetMapping("/updateStatus")
    public void updateStatus(@RequestParam("id") Integer id, @RequestParam("status") Integer status, @RequestParam(
            "templateId") Integer templateId) {
        serviceTemplateCourse.updateStatus(id, status,templateId);
    }

    /**
     * 课程-编辑
     */
    @Debounce
    @LogApi("课程-编辑")
    @PostMapping("/update")
    public void update(@RequestBody DtoTemplateCourse templateCourse) {
        intIsNull(templateCourse.getId(), "模板ID");
        idIsNull(templateCourse.getTemplateId(), "id");
        serviceTemplateCourse.updateById(templateCourse);
    }


    /**
     * 课程-删除
     */
    @Debounce
    @LogApi("课程-删除")
    @GetMapping("/delete/{id}/{templateId}")
    public void deleteById(@PathVariable("id") Integer id, @PathVariable("templateId") Integer templateId) {
        serviceTemplateCourse.deleteById(id,templateId);
    }


    /**
     * 课程-查询
     */
    @Debounce
    @PostMapping("/list")
    public List<DtoTemplateCourse> list(@RequestBody Map<String, Object> params) {
        intIsNull(params.get("templateId"), "模板ID");
        return serviceTemplateCourse.findListByParams(params);
    }

}
